// Clase NodoListaPas Clase NodoListaPas: // Atributos Atributo pasajero Atributo siguiente // Constructor del nodo de la lista Constructor NodoListaPas(p, sig): pasajero = p siguiente = sig // Método para obtener el siguiente nodo Método getSiguiente() retorna NodoListaPas: Retornar siguiente // Método para obtener el pasajero Método getPasajero() retorna Pasajero: Retornar pasajero // Clase ListaPas Clase ListaPas: // Atributos Atributo primero Atributo longitud // Constructor Constructor ListaPas(): primero = nulo longitud = 0 // Operador de asignación Método operator=(otra) retorna ListaPas: Si este != otra: // Liberar la lista actual Mientras primero != nulo: aux = primero primero = primero.siguiente borrar aux // Copiar la lista nueva copiarLista(otra) Retornar este // Método para copiar otra lista Método copiarLista(otra): Si otra.primero == nulo: primero = nulo longitud = 0 Sino: actual = otra.primero Mientras actual != nulo: insertar(actual.getPasajero()) actual = actual.siguiente // Método para insertar un pasajero en la lista Método insertar(p): nuevo = nuevo NodoListaPas(p) Si estaVacia(): primero = nuevo Imprimir "Insertado como primer elemento." Sino: actual = primero Mientras actual.siguiente != nulo: actual = actual.siguiente actual.siguiente = nuevo Imprimir "Insertado al final de la lista." longitud++ Imprimir "Longitud de la lista ahora es: " + longitud // Método para eliminar pasajeros por prioridad Método eliminarPorPrioridad(prioridad_minima): actual = primero anterior = nulo Mientras actual != nulo: Si actual.pasajero.getPrioridad() < prioridad_minima: aux = actual actual = actual.siguiente Si anterior != nulo: anterior.siguiente = actual Sino: primero = actual borrar aux longitud-- Sino: anterior = actual actual = actual.siguiente // Método para verificar si la lista está vacía Método estaVacia() retorna booleano: Retornar primero == nulo // Método para mostrar la lista de pasajeros Método mostrarListaPas(): actual = primero Si estaVacia(): Imprimir "ListaPas vacía" Sino: Imprimir "Datos de los Pasajeros en la ListaPas:" Mientras actual != nulo: Si actual == nulo: Imprimir "Error: Nodo actual es nulo durante el recorrido." Romper Imprimir "Pasajero ID: " + actual.pasajero.getId() + ", Hora: " + actual.pasajero.getHora() + ", Duración: " + actual.pasajero.getDuracion() + ", Prioridad: " + actual.pasajero.getPrioridad() + ", País: " + actual.pasajero.getPais() actual = actual.siguiente // Método para obtener la longitud de la lista Método getLongitud() retorna entero: Retornar longitud // Método para obtener el primer nodo de la lista Método getPrimero() retorna NodoListaPas: Retornar primero // Método para obtener un pasajero en una posición específica Método obtenerPasajeroEnPosicion(indice) retorna Pasajero: Si indice < 0 o indice >= longitud: Lanzar "Índice fuera de rango" actual = primero contador = 0 Mientras actual != nulo y contador < indice: actual = actual.siguiente contador++ Si actual == nulo: Lanzar "Índice fuera de rango" Retornar actual.pasajero